package com.suixuan.support.service;

import java.io.Serializable;
import java.util.List;

/**
 * 
 * @Title: IBaseService.java
 * @Package com.suixuan.spring.service
 * @Description: 业务层常用方法基本接口
 * @author suixuan
 * @date 2010-11-8 下午03:09:20
 * @version V1.0
 */
public interface IBaseService<T, PK extends Serializable> extends Serializable {

	/**
	 * 查询
	 * 
	 * @param id
	 *            主键
	 * @return T
	 */
	T findById(PK id);

	/**
	 * 保存
	 * 
	 * @Title save
	 * @Description
	 * @param entity
	 *            {@link entity}
	 * @throws UniquePropertyException
	 *             违反unique唯一约束异常
	 * 
	 */
	void save(T entity);

	/**
	 * 保存或更新
	 * 
	 * @Title saveOrUpdate
	 * @param entity
	 *            T
	 * @throws UniquePropertyException
	 * 
	 */
	void saveOrUpdate(T entity);

	/**
	 * 保存
	 * 
	 * @Title save
	 * @Description
	 * @param entity
	 *            {@link List}
	 * @throws UniquePropertyException
	 *             违反unique唯一约束异常
	 * 
	 */
	void batchSave(List<T> entity);

	/**
	 * 删除
	 * 
	 * @Title delete
	 * @Description
	 * @param entity
	 *            {@link T}
	 * 
	 */
	void delete(T entity);

	/**
	 * 删除
	 * 
	 * @Title delete
	 * @Description
	 * @param entityClass
	 *            类型
	 * @param id
	 *            主键
	 * 
	 */
	void delete(Class<T> entityClass, PK id);

}
